package com.fosu.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import lombok.NonNull;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;

/**
 * 详细商品数据类
 *
 * @author manno
 * @date 2020/10/13
 */
@Data
@Component
public class Product {
    public Product() {
        this.productCategories = new ArrayList<>();
        this.productCampus = new ArrayList<>();
        this.categoriesString = new StringBuffer();

    }

    /**
     * 商品id
     */
    @NonNull
    private Integer productId;
    /**
     * 商品所属用户id
     */
    @NonNull
    private Integer userId;
    /**
     * 商品图片组
     */
    private List<String> productImgs;
    /**
     * 商品缩略图
     * */
    private List<String> compressImgs;
    /**
     * 商品发布者
     */
    private User user;
    /**
     * 商品价格
     */
    @NonNull
    private Double productPrice;
    /**
     * 商品标签组
     */
    private Label productLabels;
    /**
     * 商品分类组
     */
    @JsonIgnore
    private List<ProductCategories> productCategories;

    public void setProductCategories(List<ProductCategories> productCategories)
    {
        this.productCategories = productCategories;
        if (this.productCategories.size() != 0)
        {
            for (ProductCategories p : this.productCategories)
            {
                categoriesString.append(p.getCategoriesName() + ",");
            }
        }
    }
    /**
     * 商品自定义分类
     */
    @JsonIgnore
    private String rawCustomizeCategories;

    /**
     * 自动处理自定义分类字串
     */
    public void setRawCustomizeCategories(String rawCustomizeCategories)
    {
        this.rawCustomizeCategories = rawCustomizeCategories;
        String[] strs = rawCustomizeCategories.split("[,]");
        for (int i = 0; i < strs.length; i++)
        {
            if (i != strs.length - 1)
            {
                categoriesString.append(strs[i] + ",");
            } else
            {
                categoriesString.append(strs[i]);
            }
        }

    }

    /**
     * 处理过的商品自定义分类
     */
    private StringBuffer categoriesString;
    /**
     * 商品所在校区
     */
    private List<Campus> productCampus;
    /**
     * 商品描述
     */
    private String productDetail;
    /**
     * 商品标题
     */
    @NonNull
    private String productTitle;
    /**
     * 修改日期
     */
    private Timestamp lastModifiedDate;
    /**
     * 浏览量
     */
    private Integer pageViews;
//    /**商品评论*/
//    private List<Comment> productComments;
    //入手价
    private Double purchasePrice;

    /**
     * 在查询时规范化时间戳格式
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    public Timestamp getLastModifiedDate() {
        return lastModifiedDate;
    }

    public Integer offShelf;
}
